package com.headwind.logistics.permission.mapper;

import com.headwind.logistics.permission.dto.EmpRoleDTO;
import com.headwind.logistics.common.pojo.Employee;
import com.headwind.logistics.common.pojo.Menu;
import com.headwind.logistics.common.pojo.Role;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 员工数据访问层
 */
public interface EmployeeMapper {

    /**
     * 临时登录
     * @return
     */
    List<Employee> tempLogin();

    /**
     * 后台管理登录
     * @param employee
     * @return
     */
    Employee adminLogin(Employee employee);

    /**
     * 根据员工号查询菜单记录
     * @param employeeNo
     * @return
     */
    List<Menu> queryMenusByEmployeeNo(String employeeNo);

    /**
     * 查询全部菜单
     * @return
     */
    List<Menu> queryAllMenu();

    /**
     * 获取员工与角色
     * @param page
     * @param rows
     * @return
     */
    List<EmpRoleDTO> queryAllEmpRolePage(@Param("page")Integer page,@Param("rows")Integer rows);

    /**
     * 查询全部角色
     * @return
     */
    List<Role> queryAllRole();

    /**
     * 添加员工信息
     * @param employee
     * @return
     */
    int addEmployee(Employee employee);

    /**
     * 添加角色员工关联表
     * @param empId
     * @param roleId
     * @return
     */
    int addEmpRole(@Param("empId")Long empId,@Param("roleId")Long roleId);

    /**
     * 查询最新员工号
     * @return
     */
    Long queryEmployeeNo();

    /**
     * 根据员工id修改员工信息
     * @param employee
     * @return
     */
    int updateEmployeeByEmpId(Employee employee);

    /**
     * 根据姓名、性别、职位、入司时间、员工号 搜索员工
     * @param empRoleDTO
     * @return
     */
    List<EmpRoleDTO> queryEmployeeByNameOrSexOrRoleOrTimeOrNo(@Param("empRoleDTO")EmpRoleDTO empRoleDTO
            ,@Param("page")Integer page
            ,@Param("rows")Integer rows
            ,@Param("list")String[] list);

    /**
     * 根据员工id获取角色
     * @param employeeId
     * @return
     */
    List<Role> queryRoleByEmpId(Long employeeId);

    /**
     * 删除员工角色关联表
     * @param roleId
     * @param empId
     * @return
     */
    Integer deleteEmpRole(@Param("roleId")Long roleId,@Param("empId")Long empId);

    /**
     * 根据用户获取权限字符串
     * @param employeeId
     * @return
     */
    List<Menu> queryMenuPermsByEmpId(Long employeeId);
}
